/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: 周斌
 * Date: 2024-05-09
 * Time: 16:50
 */


//day3贪心算法练习力扣376摆动序列
public class Main {
    public int wiggleMaxLength(int[] nums) {
        //1.如果数组中的元素个数是1位或者0位则返回数组中元素的个数
        int n = nums.length;
        if(n < 2) {
            return n;
        }
        //2.数组中的元素个数大于1位
        int count = 0;
        int left = 0;
        //此处遍历只遍历到数组的倒数第二位即可，一是数组最后一个元素属于摆动序列长度之一，二是为了防止下面程序数组越界
        for(int i = 0; i < n-1; i++ ) {
            int right = nums[i+1] - nums[i];
            //right==0说明该数组有相同的值，又可能会影响统计极值的个数，所以直接跳出循环
            if(right == 0){
                continue;
            }
            //满足这个条件则说明这个点是极值点,此处的=号是为了起始点的左侧默认为0处理的
            if(left * right <= 0) {
                count++;
            }
            left = right;
        }
        //此处的+1是加数组最后的一个端点
        return count+1;
    }
}
